package test;


import java.util.HashMap;
import java.util.Map;

public class 字母异位词 {
    public static void main(String[] args) {
        String s = "aagram";
        String t = "nagaram";
        boolean result = isAnagram(s, t);
        System.out.println(result); // 输出true
    }

    public static boolean isAnagram(String s, String t) {
        // 如果两个字符串长度不相等，直接返回false
        if (s.length() != t.length()) {
            return false;
        }

        // 使用HashMap记录s字符串中每个字符出现的次数
        Map<Character, Integer> map = new HashMap<>();
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            map.put(ch, map.getOrDefault(ch, 0) + 1);
        }

        // 对于t字符串中的每个字符，都将其在map中出现的次数减一
        for (int i = 0; i < t.length(); i++) {
            char ch = t.charAt(i);
            // 如果t中的某个字符在map中不存在，或者其出现次数为0，则返回false
            if (!map.containsKey(ch) || map.get(ch) == 0) {
                return false;
            }
            map.put(ch, map.get(ch) - 1);
        }

        // 遍历map中的所有字符，如果所有字符出现次数均为0，则说明t是s的字母异位词
        for (int count : map.values()) {
            if (count != 0) {
                return false;
            }
        }
        return true;
    }
}
